<?php
/**
 * Filtro de autenticação
 * @author Thiago Bezerra e Renato Lenz @ PC4 Team
 * @package PC4_Filtro
 */
class PC4_Filtro_Autenticado extends PC4_Filtro_AutenticadoSimples {
	
	function __construct($nomeSessao = 'usuarios', $urlLogin = 'admin/login/', $urlProibido = 'admin/main/proibido', $acl = 'config') {
		parent::__construct($nomeSessao, $urlLogin);
		$this->urlProibido = $urlProibido;	
		$this->acl = $acl;
	}
	
	function filtra($controlador) {
		parent::filtra($controlador);
		$usuario = $controlador->usuario;
		if ($this->acl == 'config') {
			$this->acl = $controlador->config->item('acl');
		}
		if (!empty($this->acl)) {
			try {
				$verificaAcl = $this->verificaPermissao($usuario['role'], $this->acl);
			}
			catch (Exception $e) {
				$verificaAcl = false;
			}
	
			if(!$verificaAcl){
//d(2);
//die;
				redirect($this->urlProibido);
			}
//d(3);
		}
		
		$controlador->layout->setDado($this->nomeSessao, (array)$usuario);
	}

	/**
	 * Checa permissão do usuário atual
	 * @param int $usuario_role
	 * @return boolean
	 */
	protected function verificaPermissao($usuario_role, $acl){
		$classe = $this->controlador->router->class;
		$metodo = $this->controlador->router->method;
		
//		return array($acl->isAllowed($usuario_role, $classe, $metodo), $classe, $metodo);
		return $acl->isAllowed($usuario_role, $classe, $metodo);
	}		
	
	
}